diff options
Diffstat (limited to 'app/[lng]/evcp')
| -rw-r--r-- | app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx (renamed from app/[lng]/evcp/(evcp)/(procurement)/p-items/page.tsx) | 124 | ||||
| -rw-r--r-- | app/[lng]/evcp/(evcp)/(procurement)/legal-review/page.tsx | 87 |
2 files changed, 62 insertions, 149 deletions
diff --git a/app/[lng]/evcp/(evcp)/(procurement)/p-items/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx index e3810b5b..2b907a75 100644 --- a/app/[lng]/evcp/(evcp)/(procurement)/p-items/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx @@ -1,62 +1,62 @@ -import * as React from "react"
-import { type SearchParams } from "@/types/table"
-
-import { getValidFilters } from "@/lib/data-table"
-import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"
-import { Shell } from "@/components/shell"
-import { getProcurementItems } from "@/lib/procurement-items/service"
-import { ProcurementItemsTable } from "@/lib/procurement-items/table/procurement-items-table"
-import { searchParamsCache } from "@/lib/procurement-items/validations"
-import { InformationButton } from "@/components/information/information-button"
-
-interface IndexPageProps {
- searchParams: Promise<SearchParams>
-}
-
-export default async function IndexPage(props: IndexPageProps) {
- const searchParams = await props.searchParams
- const search = searchParamsCache.parse(searchParams)
-
- const validFilters = getValidFilters(search.filters)
-
- const promises = Promise.all([
- getProcurementItems({
- ...search,
- filters: validFilters,
- }),
- ])
-
- return (
- <Shell className="gap-2">
- <div className="flex items-center justify-between space-y-2">
- <div className="flex items-center justify-between space-y-2">
- <div>
- <div className="flex items-center gap-2">
- <h2 className="text-2xl font-bold tracking-tight">
- 1회성 품목 관리
- </h2>
- <InformationButton pagePath="evcp/procurement-items" />
- </div>
- <p className="text-muted-foreground">
- 입찰에서 사용하는 1회성 품목을 등록하고 관리합니다.
- </p>
- </div>
- </div>
- </div>
-
- <React.Suspense
- fallback={
- <DataTableSkeleton
- columnCount={8}
- searchableColumnCount={1}
- filterableColumnCount={2}
- cellWidths={["10rem", "20rem", "8rem", "12rem", "6rem", "8rem", "10rem", "10rem"]}
- shrinkZero
- />
- }
- >
- <ProcurementItemsTable promises={promises} />
- </React.Suspense>
- </Shell>
- )
-}
+import * as React from "react" +import { type SearchParams } from "@/types/table" + +import { getValidFilters } from "@/lib/data-table" +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton" +import { Shell } from "@/components/shell" +import { getProcurementItems } from "@/lib/procurement-items/service" +import { ProcurementItemsTable } from "@/lib/procurement-items/table/procurement-items-table" +import { searchParamsCache } from "@/lib/procurement-items/validations" +import { InformationButton } from "@/components/information/information-button" + +interface IndexPageProps { + searchParams: Promise<SearchParams> +} + +export default async function IndexPage(props: IndexPageProps) { + const searchParams = await props.searchParams + const search = searchParamsCache.parse(searchParams) + + const validFilters = getValidFilters(search.filters) + + const promises = Promise.all([ + getProcurementItems({ + ...search, + filters: validFilters, + }), + ]) + + return ( + <Shell className="gap-2"> + <div className="flex items-center justify-between space-y-2"> + <div className="flex items-center justify-between space-y-2"> + <div> + <div className="flex items-center gap-2"> + <h2 className="text-2xl font-bold tracking-tight"> + 1회성 품목 관리 + </h2> + <InformationButton pagePath="evcp/procurement-items" /> + </div> + <p className="text-muted-foreground"> + 입찰에서 사용하는 1회성 품목을 등록하고 관리합니다. + </p> + </div> + </div> + </div> + + <React.Suspense + fallback={ + <DataTableSkeleton + columnCount={8} + searchableColumnCount={1} + filterableColumnCount={2} + cellWidths={["10rem", "20rem", "8rem", "12rem", "6rem", "8rem", "10rem", "10rem"]} + shrinkZero + /> + } + > + <ProcurementItemsTable promises={promises} /> + </React.Suspense> + </Shell> + ) +} diff --git a/app/[lng]/evcp/(evcp)/(procurement)/legal-review/page.tsx b/app/[lng]/evcp/(evcp)/(procurement)/legal-review/page.tsx deleted file mode 100644 index 44150492..00000000 --- a/app/[lng]/evcp/(evcp)/(procurement)/legal-review/page.tsx +++ /dev/null @@ -1,87 +0,0 @@ -// app/(routes)/legal-works/page.tsx 수정 - -import * as React from "react"; -import { Metadata } from "next"; -import { type SearchParams } from "@/types/table"; -import { Shell } from "@/components/shell"; -import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; -import { InformationButton } from "@/components/information/information-button"; -import { Badge } from "@/components/ui/badge"; // ✅ Badge 추가 -import { SearchParamsCacheLegalWorks } from "@/lib/legal-review/validations"; -import { getLegalWorks } from "@/lib/legal-review/service"; -import { LegalWorksTable } from "@/lib/legal-review/status/legal-table"; - -export const dynamic = "force-dynamic"; -export const revalidate = 0; - -export const metadata: Metadata = { - title: "법무검토 관리", - description: "법무 검토 요청 및 답변을 관리합니다.", -}; - -interface LegalWorksPageProps { - searchParams: Promise<SearchParams>; -} - -export default async function LegalWorksPage({ searchParams }: LegalWorksPageProps) { - const rawParams = await searchParams; - const parsedSearch = SearchParamsCacheLegalWorks.parse(rawParams); - - // ✅ EvaluationTargetsPage와 동일한 패턴으로 currentYear 추가 - const currentYear = new Date().getFullYear(); - - const promises = Promise.all([ - getLegalWorks(parsedSearch) - ]); - - return ( - <Shell className="gap-4"> - {/* Header - EvaluationTargetsPage와 동일한 패턴 */} - <div className="flex items-center justify-between space-y-2"> - <div className="flex items-center gap-2"> - <h2 className="text-2xl font-bold tracking-tight">법무검토 관리</h2> - <InformationButton pagePath="evcp/legal-review" /> - {/* ✅ EvaluationTargetsPage와 동일하게 Badge 추가 */} - <Badge variant="outline" className="text-sm"> - {currentYear}년 - </Badge> - </div> - </div> - - {/* Table */} - <React.Suspense - fallback={ - <DataTableSkeleton - columnCount={13} - searchableColumnCount={3} - filterableColumnCount={4} - cellWidths={[ - "3rem", // checkbox - "4rem", // No. - "5rem", // 구분 - "6rem", // 상태 - "8rem", // Vendor Code - "12rem", // Vendor Name - "4rem", // 긴급여부 - "7rem", // 답변요청일 - "7rem", // 의뢰일 - "7rem", // 답변예정일 - "7rem", // 법무완료일 - "8rem", // 검토요청자 - "8rem", // 법무답변자 - "4rem", // 첨부파일 - "8rem", // actions - ]} - shrinkZero - /> - } - > - {/* ✅ currentYear prop 추가 - EvaluationTargetsTable과 동일한 패턴 */} - <LegalWorksTable - promises={promises} - currentYear={currentYear} - /> - </React.Suspense> - </Shell> - ); -}
\ No newline at end of file |
